class AIAssistant:
    """AI助手父类，定义基础属性与通用方法"""

    def __init__(self, aid, name, ass_type, version, is_online, ability_score):
        self.aid = aid  # 编号（ID）
        self.name = name  # 名称
        self.ass_type = ass_type  # 类型
        self.version = version  # 版本号
        self.is_online = is_online  # 是否在线（布尔值）
        self.ability_score = ability_score  # 能力评分（0-100）

    def start_service(self):
        """启动AI助手服务"""
        if self.is_online:
            return False, f"助手【{self.name}】已在运行。"
        self.is_online = True
        return True, f"✅ 助手【{self.name}】服务已启动。"

    def stop_service(self):
        """停止AI助手服务"""
        if not self.is_online:
            return False, f"助手【{self.name}】已停止。"
        self.is_online = False
        return True, f"✅ 助手【{self.name}】服务已停止。"

    def assign_task(self, task_content):
        """分配任务给AI助手"""
        if not self.is_online:
            return False, f"❌ {self.name} 当前离线，无法执行任务。"
        # 不同类型助手的任务响应逻辑
        task_result = f"✅ {self.name}（{self.ass_type}）执行任务：{task_content}\n任务完成！"
        return True, task_result

    def update_info(self, attr, value):
        """修改助手属性（通用方法）"""
        valid_attrs = ["name", "ass_type", "version", "is_online", "ability_score"]
        if attr not in valid_attrs:
            return False, f"无效属性：{attr}，可修改属性为：{valid_attrs}"

        # 类型转换与合法性校验
        if attr == "is_online":
            value = bool(int(value))
        elif attr == "ability_score":
            value = int(value)
            if not (0 <= value <= 100):
                return False, "能力评分需在0-100之间"

        setattr(self, attr, value)
        return True, f"✅ 助手【{self.aid}】修改成功！"

    def __str__(self):
        """字符串格式化（列表展示用）"""
        status = "在线" if self.is_online else "离线"
        return f"ID: {self.aid}, 名称: {self.name}, 类型: {self.ass_type}, 版本: {self.version}, 状态: {status}, 能力评分: {self.ability_score} [{self.ass_type}]"

    def detail_str(self):
        """详细信息格式化（单条查询用）"""
        status_icon = "🟢在线" if self.is_online else "🔴离线"
        return f"✅ 查询结果: ID: {self.aid}, 名称: {self.name}, 类型: {self.ass_type}, 版本: {self.version}, 状态: {status_icon}, 能力评分: {self.ability_score} [{self.ass_type}]"


# 5个AI助手子类（扩展自定义属性）
class DataAnalysisAssistant(AIAssistant):
    """数据分析助手（支持数据格式属性）"""

    def __init__(self, aid, name, version, is_online, ability_score, support_formats):
        super().__init__(aid, name, "数据分析助手", version, is_online, ability_score)
        self.support_formats = support_formats  # 自定义属性：支持的数据格式（如["CSV", "Excel"]）

    def __str__(self):
        base_str = super().__str__()
        return f"{base_str}, 支持格式: {self.support_formats}"


class ImageGenerationAssistant(AIAssistant):
    """图片生成助手（支持分辨率属性）"""

    def __init__(self, aid, name, version, is_online, ability_score, max_resolution):
        super().__init__(aid, name, "图片生成助手", version, is_online, ability_score)
        self.max_resolution = max_resolution  # 自定义属性：最大分辨率（如"4K"）

    def __str__(self):
        base_str = super().__str__()
        return f"{base_str}, 最大分辨率: {self.max_resolution}"


class TextGenerationAssistant(AIAssistant):
    """文本生成助手（支持文本类型属性）"""

    def __init__(self, aid, name, version, is_online, ability_score, support_text_types):
        super().__init__(aid, name, "文本生成助手", version, is_online, ability_score)
        self.support_text_types = support_text_types  # 自定义属性：支持的文本类型（如["诗歌", "代码"]）

    def __str__(self):
        base_str = super().__str__()
        return f"{base_str}, 支持文本类型: {self.support_text_types}"


class TranslationAssistant(AIAssistant):
    """翻译助手（支持语言属性）"""

    def __init__(self, aid, name, version, is_online, ability_score, support_languages):
        super().__init__(aid, name, "翻译助手", version, is_online, ability_score)
        self.support_languages = support_languages  # 自定义属性：支持的语言（如["中-英", "中-日"]）

    def __str__(self):
        base_str = super().__str__()
        return f"{base_str}, 支持语言: {self.support_languages}"


class VoiceAssistant(AIAssistant):
    """语音助手（支持语音引擎属性）"""

    def __init__(self, aid, name, version, is_online, ability_score, voice_engine):
        super().__init__(aid, name, "语音助手", version, is_online, ability_score)
        self.voice_engine = voice_engine  # 自定义属性：语音引擎（如["小爱同学引擎", "小薇引擎"]）

    def __str__(self):
        base_str = super().__str__()
        return f"{base_str}, 语音引擎: {self.voice_engine}"
